package oj;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class NK餐馆 {
    private static int binarySearch(int[] a,int p){
        int left=0;
        int right=a.length-1;
        while(left<=right){
            int mid=(left+right)/2;
            if(a[mid]<p){
                left=mid+1;
            }else{
                right=mid-1;
            }
        }
        return left;
    }

    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            int m=sc.nextInt();
            //每张桌子所能容纳的人的数量
            int[] a=new int[n];
            //每一批客人的人数和消费金额
            int[][] bc=new int[m][2];
            int[] used=new int[n];
            for(int i=0;i<n;i++){
                a[i]=sc.nextInt();
            }
            Arrays.sort(a);
            for(int i=0;i<m;i++){
                bc[i][0]=sc.nextInt();
                bc[i][1]=sc.nextInt();
            }
            Arrays.sort(bc,new Comparator<int[]>(){
                @Override
                public int compare(int[] o1,int[] o2){
                    return o2[1]-o1[1];
                }
            });
            long max=0L;
            for(int i=0;i<m;i++){
                if(a[n-1]<bc[i][0]){
                    continue;
                }
                //这批客人的人数
                int p=bc[i][0];
                //这批客人的消费金额
                int price=bc[i][1];

                int index=binarySearch(a,p);
                while(index<n && used[index]==1){
                    index++;
                }
                if(index<n){
                    max+=price;
                    used[index]=1;
                }

            }
            System.out.println(max);
        }
    }
}
